(1) Field of the Invention
The present invention relates generally to the field of computer software. More particularly, the present invention relates to the field of software platforms for distributed applications.
(2) Background Art
Development in software technology has allowed computers to perform a wide variety of useful operations. Depending on the software which is installed within their particular memory storage devices, computers can be used for many purposes. For example, they can be used to manage numerous financial transactions of a bank, control the fabrication of items ranging from automobiles down to integrated circuit chips, store addresses and telephone numbers of acquaintances, analyze scientific and engineering data, produce and edit documents, along with transmitting and receiving data. The functionality and usefulness of a computer system is further enhanced by networking computer systems together.
The Internet has also been made possible by recent advances in hardware and software technology. The Internet is a worldwide collection of computer networks and gateways that use the TCP/IP suite of protocols to communicate with one another. Millions of people use the Internet for communication and entertainment. The Internet is also rapidly evolving as new kinds of networks (e.g., wireless networks, home networks) are added to the Internet to provide new functionalities such as digital broadcast and telephony. The continuous growth in popularity and functionality of the Internet appears promising for large-scale distributed software applications. However, strong barriers prevent their deployment.
Developing large-scale distributed software applications is an intricate and time-consuming process that often requires software designers to develop a full set of services for managing distributed processes such as synchronization and communication between software modules. In addition, when developing a distributed application, it is difficult to predict the latency and communications medium in which it will be used. It is also impossible to predict the number of people that will use the distributed application. Properties like persistency, fault-tolerance and replication, which are typically present in distributed applications, are complex software procedures that are inherently difficult to implement.
In recent years, a number of technologies have been developed to ease the development process in this field. These technologies, such as distributed objects and distributed systems (e.g., Common Object Request Broker Architecture CORBA), simplify the process of creating distributed software applications by abstracting away the complexities of a distributed network environment from the programmer. Nevertheless, many issues in developing distributed applications remain unaddressed. One of the problems applications designers still face is that it is difficult to control the performance of a distributed application. Numerous factors such as format, content and size of an audio/video stream, or the effective mobility and connectivity of a mobile computer, may greatly affect the speed and efficiency of the application. Other factors, such as undocking a mobile computer, may prompt an associated distributed application to perform communication encryption and to adjust its consistency protocols. Changes in one or several of these factors require a quick and appropriate adaptation of the application to deliver the performance expected by the user.
In order to meet these requirements, distributed applications need to be adaptive. Their adaptability should address a wide range of areas and should be sufficiently flexible to allow quick adaptation. One solution is to build adaptive behaviors into individual applications. However, that solution is not feasible because the burden imposed on programmers would be too great. Rather, what is needed is a general application framework that allows an application to provide quick and appropriate adaptation. What is further needed is a method of developing adaptive distributed applications in a relatively abstract and intuitive manner.